package com.example.interceptor;

import com.example.model.Student;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 配置一个拦截器，用于拦截那些需要登陆没有登陆的地址
// 其实用filter可以的，既然老师上课的时候演示的是这个那就用这个了把
public class LoginInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        // 这里的返回值说一下
        // 如果不需要拦截的话就直接返回true就行了，不需要返回false

        // 就例如 地址 "/student" 是要登陆了才能进入的

        // 获取资源咯，只要根（节点？）包含了student就检查一下登陆没有把
        String uri = request.getRequestURI();
        // 如果正在访问student
        if (uri.contains("student")){
            // 看看从session能不能去除student
            Student student = (Student) request.getSession().getAttribute("student");
            if (student == null){
                // 没登陆就重定向回首页让他登陆
                // 这样可以重定向但是不能往request里传数据
                // response.sendRedirect("/");
                // 采用另一种
                request.setAttribute("msg","请先登录");
                request.getRequestDispatcher("/").forward(request, response);
            }
        }

        return true;
    }
}
